home *** CD-ROM | disk | FTP | other *** search
- #include "csim.h"
- #include <bios.h>
- #include <conio.h>
- #include <graphics.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
-
- void mover(void);
- void ender(void);
-
- int color = 1;
- int maxx,maxy;
-
- int main(void)
- {
- int loop;
- int gr_driver,gr_mode,gr_error;
-
- clrscr();
- randomize();
-
- for(loop = 0;loop < 4;loop++)
- if(start_process(mover,0x0080))
- exit_processing(loop);
-
- if(start_kb_process(ender,0x0040))
- exit_processing(3);
-
- gr_driver = DETECT;
- gr_mode = VGAHI;
-
- initgraph(&gr_driver,&gr_mode,"");
- gr_error = graphresult();
- if (gr_error != 0)
- {
- printf("%s \n",grapherrormsg(gr_error));
- exit(1);
- }
- maxx = getmaxx();
- maxy = getmaxy();
-
- sim_start();
- return(0);
- }
-
- void mover(void)
- {
- int mycolor;
- int x,y,oldx,oldy,dir;
- if(color == 7)
- color += 2;
- mycolor = color++;
- color %= 16;
- if(color == 0)
- color++;
- x = oldx = (rand() % (maxx-10)) + 5;
- y = oldy = (rand() % (maxy-10)) + 5;
- dir = rand() % 4;
- while(1)
- {
- switch(rand()%6)
- {
- case 0:
- dir+=7;
- dir = dir % 8;
- break;
- case 1:
- dir++;
- dir = dir % 8;
- break;
- case 2:
- dir+=2;
- dir = dir % 8;
- break;
- case 3:
- dir+=6;
- dir = dir % 8;
- break;
- default:
- break;
-
- }
- switch(dir)
- {
- case 0:
- x += 4;
- if(x>(maxx-5))
- dir = 4;
- break;
- case 1:
- y += 3;
- if(y>(maxy-5))
- dir = 6;
- x += 3;
- if(x>(maxx-5))
- dir = 5;
- break;
- case 2:
- y += 4;
- if(y>(maxy-5))
- dir = 6;
- break;
- case 3:
- x -= 3;
- if(x<5)
- dir = 0;
- y += 3;
- if(y>(maxy-5))
- dir = 7;
- break;
- case 4:
- x -= 4;
- if(x<5)
- dir = 0;
- break;
- case 5:
- y -= 3;
- if(y<5)
- dir = 2;
- x -= 3;
- if(x<5)
- dir = 3;
- break;
- case 6:
- y -= 4;
- if(y<5)
- dir = 2;
- break;
- case 7:
- x += 3;
- if(x>maxx-5)
- dir = 4;
- y -= 3;
- if(y<5)
- dir = 3;
- break;
- }
- setlinestyle(SOLID_LINE,0,3);
- setcolor(BLACK);
- line(oldx,oldy,x,y);
- setlinestyle(SOLID_LINE,0,1);
- setcolor(mycolor);
- line(oldx,oldy,x,y);
- oldx = x;
- oldy = y;
- wait_for_time(0);
- }
- }
- void ender(void)
- {
- while(!bioskey(1))
- wait_for_time(100);
- closegraph();
- exit_processing(0);
- }
-